package cn.seaboot.admin.quartz.smart;

import cn.seaboot.admin.quartz.bean.ScheduleJob;
import cn.seaboot.admin.quartz.bean.ScheduleLog;

/**
 * @author Mr.css
 * @version 2023-09-20 10:30
 */
public interface JobLogger {

    /**
     * 任务启动前置日志
     *
     * @param job 任务
     * @return 日志对象实体
     */
    ScheduleLog beforeJobStart(ScheduleJob job);

    /**
     * 任务执行异常日志
     *
     * @param job 任务
     * @param log 日志对象实体
     * @param e   异常输出
     */
    void onJobFailed(ScheduleJob job, ScheduleLog log, Exception e);

    /**
     * 任务执行成功日志
     *
     * @param job 任务
     * @param log 日志对象实体
     * @param row 受影响行数
     */
    void onJobSucceed(ScheduleJob job, ScheduleLog log, int row);
}
